//
//  WBHomeController.swift
//  SinaMicroblog
//
//  Created by 原鹏飞 on 2017/4/2.
//  Copyright © 2017年 YuanPengFei. All rights reserved.
//

import UIKit

fileprivate let identifier = "homeCell"

class WBHomeController: WBRootController {
    //定义属性: 数据源数组
    var dataSourceArr: [WBStatusModel] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        tableView.register(WBStatusCell.self, forCellReuseIdentifier: identifier)
        tableView.estimatedRowHeight = 100
        tableView.rowHeight = UITableViewAutomaticDimension
        
        //判断用户的登录状态: 如果已登录, 就加载数据
        if WBUserAccount.shared.isLogin {
            //获取数据
            loadData()
        }
    }
}


// MARK: - 获取微博数据
extension WBHomeController {
    override func loadData() {
        var since_id: Int64 = 0
        var max_id: Int64 = 0
        
        var ispullDown = true
        
        //下拉刷新时, since_id传0, Max_id传最后1条微博的id
        //上拉刷新时, since_id传第1条微博的id, Max_id传0
        if refreshHeader.isRefreshing() {   //下拉刷新
            since_id = dataSourceArr.first?.id ?? 0
        } else {    //上拉刷新
            max_id = dataSourceArr.last?.id ?? 0
            //将下拉标识改为否
            ispullDown = false
        }
        
        //调用requestStatus获取微博网络数据
        NetworkTool.shared.requestStatus(sinceId: since_id, maxId: max_id) { (responseObject) in
            //将可选的Any类型(responseObject)弱转成可选的 [WBStatusModel], 再做可选绑定
            if var statusModelArr = responseObject as? [WBStatusModel] {
                //更新数据源: 如果是上拉, 将获取的新微博数据塞到数据源的前面; 如果是下拉, 将获取的新微博数据拼接到数据源的后面
                if ispullDown == true { //下拉
                    self.dataSourceArr = statusModelArr + self.dataSourceArr
                } else {    //上拉
                    //如果返回的数据大于1条, 则将第一条数据删除, 避免数据重复
                    if statusModelArr.count > 0 {
                        statusModelArr.removeFirst()
                    }
                    self.dataSourceArr += statusModelArr
                }
                
                //更新数据
                self.tableView.reloadData()
                
                //判断是上拉还是下拉, 结束菊花转动的状态(在更新数据完成之后)
                if ispullDown == true { //下拉
                    self.refreshHeader.endRefreshing()
                } else {    //上拉
                    self.refreshFooter.endRefreshing()
                }
            }
        }
    }
}


// MARK: - 重写tableView的数据源方法
extension WBHomeController {
    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return dataSourceArr.count
    }
    
    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: identifier, for: indexPath) as! WBStatusCell
//        let model = dataSourceArr[indexPath.row]
//        cell.textLabel?.text = model.text
        return cell
    }
}
